#ifndef POINTER_ITERATOR_H
#define POINTER_ITERATOR_H

template < class Iterator >
class PointerIterator : public Iterator
{
public:
  typedef Iterator iterator_type;
  typedef typename iterator_type::value_type item_type;
  
  item_type& operator * () { return *(iterator_type::operator *()); }
  // TODO item_type& operator ->* (someshit) {  }
};

template < class Iterator >
class PointerConstIterator : public Iterator
{
public:
  typedef Iterator iterator_type;
  typedef typename iterator_type::value_type item_type;
  
  const item_type& operator * () const { return *(iterator_type::operator *()); }
  // TODO item_type& operator ->* (someshit) {  }
};



#endif // POINTER_ITERATOR_H
